博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PageHelper分页插件及通用分页js
阅读量:6160 次
发布时间:2019-06-21

本文共 5807 字,大约阅读时间需要 19 分钟。

 分页概述

1.物理分页

物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果。建议使用。

2.逻辑分页

逻辑分页依赖的是程序员编写的代码。数据库返回的不是分页结果,而是全部数据,然后再由程序员通过代码获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据。

MyBatis 分页插件 - PageHelper

该插件目前支持以下数据库的物理分页:

  1. Oracle
  2. Mysql
  3. MariaDB
  4. SQLite
  5. Hsqldb
  6. PostgreSQL
  7. DB2
  8. SqlServer(2005,2008)
  9. Informix
  10. H2
  11. SqlServer2012
  12. Derby
  13. Phoenix

分页插件 5.0

由于分页插件 5.0 版本和 4.2.x 实现完全不同,所以 master 分支为 5.x 版本,4.2 作为一个分支存在,如果有针对 4.2 的 PR,请注意提交到分支版本。

集成

使用 PageHelper 你只需要在 classpath 中包含  和 。

如果你使用 Maven,你只需要在 pom.xml 中添加下面的依赖:

com.github.pagehelper
pagehelper
最新版本

本次开发环境:JDK1.8+MySql5.0+Mybatis-pagehelper4.2.1+maven

注意maven中的其他依赖的版本可能会影响该插件,导致引入失败

使用步骤

1.在maven pom.xml中添加依赖

2.在Mybatis-config.xml中sqlSessionFactory中添加插件配置

dialect=mysql

3.写sql、service

public PageInfo
selectByUnitId(Integer id,Integer currPage,Integer pageSize) { PageHelper.startPage(currPage,pageSize);//当前页面编号+(从第0页开始),每页的大小 PageInfo
pageInfo = new PageInfo
(studentDao.selectByUnitId(id)); return pageInfo; } 建议sql不要这样简单粗暴的查询 sql:select * from student; 即使如此pageHelper插件也会自动的查询指定的条数 PageInfo:大致包含以下信息:{pageNum=1, pageSize=5, size=5, startRow=1, endRow=5, total=10, pages=2, list{...}} 每次查询之后将指定条数的数据放在PageInfo中。 在Controller层 把pageInfo放在requestScope中,命名student(与下文同)

 这样就可以根据pageNum输出指定的信息

jsp:分页标签

这是一个完整的分页标签,只要更改参数即可                           

js:分页代码

function createPaginationNav(e, t, a, n, p, o, i, s) {    null == e && (e = ""), e = e.replace(/\&currPage=\d+\&/, "&"), e = e.replace(/\&?currPage=\d+\&?/, "");    var r = e.length;    r > 0 && "?" == e.charAt(r - 1) && (e = e.replace("?", "")), null == i && (i = ""), "undefined" == typeof s && (s = 10);    var g = s,        l = e,        f = l.indexOf("?");    if (l += f > 0 ? "&currPage=" : "?currPage  =", document.write('第' + t + "页 "), document.write('共' + p + "页 "), p > 1) {        1 == t ? (document.write('首页'), document.write('<<')) : (document.write('首页'), document.write('<<'));        var d = 1;        if (p > g) {            var u = 0,                c = 0,                m = Math.round(g / 2);            for (d = p / g + 1, t > m && p - m >= t ? (u = t - m, c = t + m - 1) : m >= t ? (u = 1, c = g) : (u = p - g + 1, c = p), c > p && (c = p), ipage = u; c >= ipage; ipage++) p >= ipage && document.write(t == ipage ? '' + ipage + "" : '' + ipage + "")        } else            for (ipage = 1; p >= ipage; ipage++) document.write(t == ipage ? '' + ipage + "" : '' + ipage + "");        t == p ? (document.write('>>'), document.write('尾页')) : (document.write('>>'), document.write('尾页')), document.write('  GOTO')    }}function goto_page(e, t) {    var a = /^[0-9]+$/;    return gotoInputId = "gotopage" + t, a.test(document.getElementById(gotoInputId).value) ? void(location.href = e + document.getElementById(gotoInputId).value) : (alert("请输入数字!"), document.getElementById(gotoInputId).value = "", !1)} //在jsp中调用此函数
 

 

MyBatis plus通用Mapper实现分页

安装:

逻辑分页 private ApplicationContext ioc =                new ClassPathXmlApplicationContext("applicationContext.xml");    private EmployeeMapper employeeMapper=            ioc.getBean("employeeMapper", EmployeeMapper.class);    //5. 分页查询page集成rowBounds  Page(currPage,Pagesize);(内存分页)     List
emps = employeeMapper.selectPage(new Page<>(3, 2), null);     System.out.println(emps);

 使用Mybatisplus插件中的PageIntercepter插件实现物理分页

 

//测试分页 public void testPaginationInterceptor(){
IPage
pages =employeeMapper.selectPage(new Page<>(1,5),null);//即可实现分页 System.out.println(pages.getRecords()); } sql执行:说明这是一个实实在在的物理分页 DEBUG 10-02 11:37:07,239 ==>  Preparing: SELECT id,last_name AS lastName,email,gender,age FROM tbl_employee LIMIT 0,5  IPage对象的方法: default IPage
setPages(long pages) {
return this; } List
getRecords(); IPage
setRecords(List
var1); long getTotal(); IPage
setTotal(long var1); long getSize(); IPage
setSize(long var1); long getCurrent(); IPage
setCurrent(long var1);

 

 

 

 

转载地址:http://iasfa.baihongyu.com/

你可能感兴趣的文章
Java transient关键字使用小记
查看>>
在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
查看>>
JSP版LCX:端口转发神器 KPortTran
查看>>
解决提交数据的乱码
查看>>
2013年第45周三专注行动放弃小问题纠结
查看>>
黄聪:利用iframe实现ajax 跨域通信的解决方案(转)
查看>>
未来的学习
查看>>
批处理--批量打开程序&批量关闭程序
查看>>
七窍通五脏:心气足则味觉灵 肺燥热则鼻孔干 身体流出 5种 液体对应五脏
查看>>
页面跳转并提示的解决方案
查看>>
TextFlow with JavaFX 2
查看>>
K8 系统中省市县数据表的设计可以反映出什么? 通过一个基础业务表的设计品味软件系统的整体架构...
查看>>
Winform开发框架之简易工作流设计
查看>>
[转]CodeIgniter与Zend Acl结合实现轻量级权限控制
查看>>
Java 技术新手入门
查看>>
js基础
查看>>
HDUOJ-----2571跳舞毯
查看>>
返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller
查看>>
微信公众平台开发之在网页上添加分享到朋友圈,关注微信号等按钮
查看>>
HDUOJ---4503 湫湫系列故事——植树节
查看>>